package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.budget.RCBudget;
import com.shrct.businessprocess.project.RCExchangeRate;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.RCBasePurchaseOrder;
import com.shrct.businessprocess.purchase.RCPayRequest;
import com.shrct.businessprocess.purchase.RCPurchaseOrderAcceptPay;
import com.shrct.businessprocess.purchase.impl.RCBasePurchasePayRequestImpl;
import com.shrct.businessprocess.purchase.proxy.RCBasePurchasePayRequestProxy;
import edu.fudan.langlab.domain.workflow.BusinessProcess;
import edu.fudan.langlab.domain.workflow.IHasProcess;
import edu.fudan.mylang.pf.EntityImplementation;
import java.util.Collection;

@EntityImplementation(implementBy = RCBasePurchasePayRequestImpl.class)
public interface RCBasePurchasePayRequest extends RCPayRequest, IHasProcess {
  public abstract RCBasePurchaseOrder getPurchaseOrder();
  
  public abstract RCBasePurchasePayRequest setPurchaseOrder(final RCBasePurchaseOrder purchaseOrder);
  
  public abstract RCExchangeRate getDefaultExchangeRate();
  
  public abstract RCBudget getBudget();
  
  public abstract String getEntityName();
  
  public abstract BusinessProcess getProcess();
  
  public abstract Collection<RCPurchaseOrderAcceptPay> getPays();
  
  /**
   * 已分配给收货的金额
   */
  public abstract RCProjectMoney getUsedAmount();
  
  /**
   * 还未分配给收货的金额
   */
  public abstract RCProjectMoney getRemainAmount();
  
  public abstract RCBasePurchasePayRequestProxy toProxy();
}
